package com.jd.finance.core.controller.admin;


import com.jd.finance.core.service.OpreateLogService;
import com.jd.finance.core.service.impl.AdminUtilsServiceImpl;
import com.jd.finance.result.BaseResult;
import com.jd.finance.util.RegexValidateUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * <p>
 * 操作日志表 前端控制器
 * </p>
 *
 * @author LiQingBo
 * @since 2022-05-25
 */
@Api(tags = "操作日志管理")
@Slf4j
@RestController
@RequestMapping("/admin/core/adminLogCenter")
public class AdminOpreateLogController {

    @Resource
    private OpreateLogService opreateLogService;

    @Resource
    private AdminUtilsServiceImpl adminUtilsService;

    @ApiOperation("查询所有操作日志")
    @GetMapping("/getAllOperateLog")
    public BaseResult getAllOperateLog(Integer uid) {
        if (uid==null) {
            log.error("查询所有操作日志，查询所有部门信息信息为空!");
            return BaseResult.error().message("查询所有操作日志，查询所有部门信息信息为空!");
        }

        if (!adminUtilsService.isInformation(uid) && !adminUtilsService.isGM(uid)) {
            log.error("该用户非总经理或信息管理员身份!");
            return BaseResult.error().message("该用户非总经理或信息管理员身份!");
        }

        return opreateLogService.getAllOperateLog(uid);
    }

    @ApiOperation("根据时间段查询操作日志")
    @GetMapping("/selectLogByTime")
    public BaseResult selectLogByTime(Integer uid,String bigTime,String expTime) {
        if (uid==null || bigTime==null || expTime==null) {
            log.error("根据时间段查询操作日志,提交信息为空!");
            return BaseResult.error().message("根据时间段查询操作日志,提交信息为空!");
        }
        if (!adminUtilsService.isAdmin(uid) && !adminUtilsService.isGM(uid)) {
            log.error("该用户非管理员或总经理身份!");
            return BaseResult.error().message("该用户非管理员或总经理身份!");
        }

        return opreateLogService.selectLogByTime(uid,bigTime,expTime);
    }

    @ApiOperation("根据手机号查询操作日志")
    @GetMapping("/selectLogByPhone")
    public BaseResult selectLogByPhone(Integer uid,String userPhone) {
        if (uid==null || userPhone==null) {
            log.error("根据手机号查询操作日志,提交信息为空!");
            return BaseResult.error().message("根据手机号查询操作日志,提交信息为空!");
        }
        if (!adminUtilsService.isAdmin(uid) || !adminUtilsService.isGM(uid)) {
            log.error("该用户非管理员或总经理身份!");
            return BaseResult.error().message("该用户非管理员或总经理身份!");
        }

        if (!RegexValidateUtils.checkCellphone(userPhone)) {
            log.error("输入的手机号格式不正确!");
            return BaseResult.error().message("输入的手机号格式不正确!");
        }

        return opreateLogService.selectLogByPhone(uid,userPhone);
    }
}

